'use strict';

function rad(d) {
  return d * Math.PI / 180.0;
}

// 计算地图两点间矩离
function GetDistance( lat1,  lng1,  lat2,  lng2) {
  if( ( Math.abs( lat1 ) > 90  ) ||(  Math.abs( lat2 ) > 90 ) ) {
  	return "传入参数有误";
  }
  if((Math.abs( lng1 ) > 180 ) || (Math.abs(lng2) > 180)) {
  	return "传入参数有误";
  }
  var radLat1 = rad(lat1);
  var radLat2 = rad(lat2);
  var a = radLat1 - radLat2;
  var b = rad(lng1) - rad(lng2);
  var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
  s = s *6378.137 ;
  s = Math.round(s * 10000) / 10000;
  return s;
}

exports.calDis = function(fromPosition, toPosition) {
  var lat1 = fromPosition.lat;
  var lng1 = fromPosition.lng;
  var lat2 = toPosition.lat;
	var lng2 = toPosition.lng;
	var dis = GetDistance(lat1, lng1, lat2, lng2);
  return dis;
};
